From: Colin Walters Date: Wed, 12 Aug 2009 21:07:00 +0000 (-0400) Subject: dash: Clean up search pane creation X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~11089 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=619066780f6af70aa5001e82cf372432c401fd51;p=gnome-shell.git dash: Clean up search pane creation There was some weirdness relating to when the search pane is shown in a timeout, and how that relates to setSearch. Instead of doing this in the timeout, just call setSearch() in the timeout. The pane hide/show state is directly controlled from the handler. --- diff --git a/js/ui/dash.js b/js/ui/dash.js index 479a5d10a..1059f40e5 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -447,11 +447,19 @@ Dash.prototype = { this._searchAreaApps = null; this._searchAreaDocs = null; - this._searchQueued = false; + this._searchId = 0; this._searchEntry.entry.connect('text-changed', Lang.bind(this, function (se, prop) { let text = this._searchEntry.getText(); + text = text.replace(/^\s+/g, "").replace(/\s+$/g, "") this._searchActive = text != ''; - if (this._searchQueued) + if (!this._searchActive) { + if (this._searchPane != null) + this._searchPane.close(); + if (this._searchId > 0) + Mainloop.source_remove(this._searchId); + return; + } + if (this._searchId > 0) return; if (this._searchPane == null) { this._searchPane = new ResultPane(this); @@ -468,18 +476,13 @@ Dash.prototype = { this._addPane(this._searchPane); this._searchEntry.setPane(this._searchPane); } - this._searchQueued = true; - Mainloop.timeout_add(250, Lang.bind(this, function() { + this._searchPane.open(); + this._searchId = Mainloop.timeout_add(150, Lang.bind(this, function() { + this._searchId = 0; let text = this._searchEntry.getText(); - // Strip leading and trailing whitespace text = text.replace(/^\s+/g, "").replace(/\s+$/g, ""); - this._searchQueued = false; this._searchAreaApps.setSearch(text); this._searchAreaDocs.setSearch(text); - if (text == '') - this._searchPane.close(); - else - this._searchPane.open(); return false; })); }));